소스 분석에 자주 쓰는 셸 명령어 모음
NOTE
개발 서버에서 대규모 C 소스를 뒤지거나 프로세스/라이브러리 상태를 확인할 때 바로 쓰는 명령어 모음. bash와 csh(tcsh) 두 계열을 함께 정리한다.
왜 bash와 csh를 둘 다 보는가
통신 장비 등 운영 계정은 관례적으로 csh(tcsh) 를 기본 셸로 쓰는 경우가 많다. 반면 개인 개발 환경과 대부분의 스크립트는 bash다. 두 셸은 환경변수 설정(
exportvssetenv)과 리다이렉션 문법이 달라서, 같은 명령이 한쪽에서만 동작하는 일이 자주 생긴다.
bash 기반 명령어
| 명령어 | 사용법 | 설명 | 비고 |
|---|---|---|---|
| find | find / -name "찾을내용" 2>/dev/null | 찾을 내용 중에 에러값 넘기기 | bash |
| grep | grep -rn --include="*.c" "검색어" [경로] | 특정 경로 하위 중에서 특정 파일안에 들어있는 검색어 일치값 grep 찾기 | bash |
| grep | grep -rn "검색어" [경로] | 파일 확장자 제한 없이 경로 하위 전체에서 검색어 일치 줄+줄번호 찾기 | 소스코드 함수 추적 사용 |
| sed | sed -n 'n1,n2p' [경로] | 파일의 n1~n2번째 줄만 출력 | 소스코드 함수 추적 사용 |
| ps(psg) | ps -ef | grep "프로세스명" | 특정 이름을 가진 프로세스의 PID·기동 시각·실행 커맨드 확인 (관례상 alias psg='ps -ef | grep'로 줄여 쓰기도 함) | 프로세스 상태 확인용 |
| ldd | ldd [바이너리 경로] | grep "라이브러리명" | 실행 파일/프로세스가 실제로 링크한 공유 라이브러리(.so) 경로 확인 | 링크된 라이브러리 버전 불일치 디버깅에 사용 |
| ldd | ldd [바이너리 경로] | grep "신규 라이브러리명" | Makefile에 -l라이브러리 추가 후 빌드한 바이너리가 그 라이브러리를 실제로 링크했는지 확인 | 예: ldd myserver | grep jansson — 새 라이브러리 도입 시 빌드 확인용 |
| alias | alias key='value' | 별칭 | bash |
csh 기반 명령어
| 명령어 | 사용법 | 설명 | 비고 |
|---|---|---|---|
| find | find / -name "찾을내용" |& grep -v -i "제외할내용" | 검색결과 필터링 | csh |
| grep | grep -rn --include="*.c" "검색어" [경로] | 특정 경로 하위 중에서 특정 파일안에 들어있는 검색어 일치값 grep 찾기 | csh |
| alias | alias key "value" | 별칭 | csh |